/**
 * @description 购物车订单数据
 * @author 宫彦胜
 */

const { createCart, selectByProductId, updateCart, selectCart } = require('../service/cart')
const { SuccessModel, ErrorModel } = require('../model/ResModel')
const { createCartFailInfo } = require('../model/ErrorInfo')

/**
 * 
 * @param {object} param0 
 */
async function saveCart({ productId, name, primaryPicUrl, retailPrice, userId }){

  // 首先看有没有，如果有就修改数量，如果没有就新加一条, 应该需要根据用户
  const cart = await selectByProductId({state: 1,productId,userId})
  if(cart){
    await updateCart({ state: 1, productId,userId },{ count: cart.count+1 })
    return new SuccessModel()
  }
  
  // 这里来返回信息
  const res = await createCart({ productId, name, primaryPicUrl, retailPrice, userId })
  if(!res){
    return new ErrorModel(createCartFailInfo)
  }
  return new SuccessModel()
}

/**
 * 
 * @param {number} userId 
 * @param {number} productId 商品id 
 * @param {number} isChcked 0 未选中 选中
 * @returns 
 */
async function changeCheck({ userId,isChecked,productId }){
  await updateCart({state: 1,productId,userId},{ isChecked })
  return new SuccessModel()
}

async function findCartByUserId(userId){
  const res = await selectCart({state:1,userId})
  return new SuccessModel(res)
}

/**
 * 
 * @param {integer} id 
 * @param {integer} num 修改后的数据 
 * @param {string} product 商品id 
 */
async function changeCount({ userId, num, productId  }){
  // 首先获取原始数据
  const origin = await selectByProductId({state: 1,productId,userId})
  // 拿到
  let count = num + origin.count
  if(count<1) count = 1
  await  updateCart({state: 1,productId,userId},{ count })
  return new SuccessModel()
}

module.exports = {
  saveCart,
  changeCheck,
  findCartByUserId,
  changeCount
}